It is well understood that the conversion of floating point numbers to fixed point involves a loss of precision. Nevertheless, it is still desirable for reasons of cost to perform certain tasks, such as the rendering of polygons in a graphics system, in fixed point. Unfortunately, the loss of precision (which can't be avoided) can sometimes introduce artifacts in the outcomes for the tasks being performed. Consider, for example, the graphics system task of area fill for a triangle described by three vertices. Let the sides be labeled one, two and three in order of their length. A collection of pixels can be identified to describe side one. Then sides one and two are considered together to find pixels for side two, which will include a vertex that is between sides two and three. Finally, sides one and three can be considered together to find pixels for side three. Those who are familiar with these kinds of processes will appreciate that two different descriptions can result for the one vertex formed by the intersection of sides two and three. They will further appreciate that the root cause is that some process, used over again for each side, but with different data each time, produces inconsistent results owing to the losses of precision in the floating point to fixed point conversions for the different instances of the process. This problem is most acute when the converted number appears to have a fractional portion of zero, when in fact the fractional portion would not be zero except for the truncation of bits during the conversion process. Mindful that the price of simply retaining all of the original precision is prohibitive, what is needed is a way to retain an indication, in the converted numbers themselves, that precision was lost. This indication can be used to counteract, or mitigate, the computational error or artifact that would otherwise occur.
Similar situations can arise, depending upon the circumstances, simply because there is a deliberate reduction in precision done without conversion from floating point to fixed point. Say, from forty-eight bits of fixed point down to thirty-two, or from thirty-two down to twenty-four or sixteen. It is the loss or precision that is the culprit, not, in principle, the conversion from one format to another. The compensatory technique to be described is applicable to both situations, although it is probable that the conversion situation is more prevalent than the other.